package com.gitee.cnlongdb.basic.utils.socket;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 * 系统名称：财务中心
 * 模块名称：
 × 模块描述：序列化工具类
 × 功能列表：
 × 模块作者：ZOUYONG
 × 开发时间：2018年12月20日 下午3:50:48
 × 模块路径：com.gitee.cnlongdb.basic.utils.socket.SerializableUtil
 */
public class SerializableUtil {

	/**
	 * 功能描述：将对象转换成字节
	 × 模块作者：ZOUYONG
	 × 开发时间：2018年12月20日 下午3:35:03
	 × 返回数据：byte[]
	 */
	public static byte[] toBytes(Object object) {
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		ObjectOutputStream oos = null;
		try {
			oos = new ObjectOutputStream(baos);
			oos.writeObject(object);
			byte[] bytes = baos.toByteArray();
			return bytes;
		} catch (IOException ex) {
			throw new RuntimeException(ex.getMessage(), ex);
		} finally {
			try {
				oos.close();
			} catch (Exception e) {
			}
		}
	}

	/**
	 * 功能描述：将字节转换成对象
	 × 模块作者：ZOUYONG
	 × 开发时间：2018年12月20日 下午3:34:51
	 × 返回数据：Object
	 */
	public static Object toObject(byte[] bytes) {
		ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
		ObjectInputStream ois = null;
		try {
			ois = new ObjectInputStream(bais);
			Object object = ois.readObject();
			return object;
		} catch (IOException ex) {
			throw new RuntimeException(ex.getMessage(), ex);
		} catch (ClassNotFoundException ex) {
			throw new RuntimeException(ex.getMessage(), ex);
		} finally {
			try {
				ois.close();
			} catch (Exception e) {
			}
		}
	}

}
